home *** CD-ROM | disk | FTP | other *** search
- *** viewing.c Mon Oct 11 14:59:56 1993
- --- viewing.c.frac Mon Oct 11 14:46:03 1993
- ***************
- *** 249,255 ****
- Pixel *color; /* resulting color */
- int sample; /* sample number */
- {
- ! Float dist;
- HitList hitlist;
- Color ctmp, fullintens;
- extern void focus_blur_ray(), ShadeRay();
- --- 249,255 ----
- Pixel *color; /* resulting color */
- int sample; /* sample number */
- {
- ! Float dist, temp;
- HitList hitlist;
- Color ctmp, fullintens;
- extern void focus_blur_ray(), ShadeRay();
- ***************
- *** 258,263 ****
- --- 258,264 ----
- * Calculate ray direction.
- */
- Stats.EyeRays++;
- + ray->type = EYE_RAY;
- ray->dir.x = Screen.firstray.x + x*Screen.scrnx.x + y*Screen.scrny.x;
- ray->dir.y = Screen.firstray.y + x*Screen.scrnx.y + y*Screen.scrny.y;
- ray->dir.z = Screen.firstray.z + x*Screen.scrnx.z + y*Screen.scrny.z;
- ***************
- *** 280,285 ****
- --- 281,293 ----
- fullintens.r = fullintens.g = fullintens.b = 1.;
- dist = FAR_AWAY;
- hitlist.nodes = 0;
- +
- + ray->viewpoint = ray->pos;
- + ray->viewdist = 0.;
- + ray->width = 2.*tan(deg2rad(Camera.hfov/2.))/Screen.xres;
- + if ((temp = 2.*tan(deg2rad(Camera.vfov/2.))/Screen.yres) > ray->width) ray->width = temp;
- + ray->stretch = 1.;
- +
- (void)TraceRay(ray, &hitlist, EPSILON, &dist);
- ShadeRay(&hitlist, ray, dist, &Screen.background, &ctmp, &fullintens);
- color->r = ctmp.r;
- ***************
- *** 291,293 ****
- --- 299,321 ----
- color->alpha = 0.;
- }
- }
- +
- + Float PixelSize(ray, dist)
- + Ray *ray;
- + Float dist;
- + {
- + Float s, d;
- +
- + d = dist / ray->stretch;
- + if (ray->viewdist < EPSILON) /* eye rays */
- + s = ray->width * d;
- + else if (ray->viewdist < FAR_AWAY) /* infinite light sources !! */
- + s = ray->width / ray->viewdist * (d + ray->viewdist);
- + else
- + s = ray->width;
- + s = fabs(s);
- + if (s < EPSILON) return EPSILON;
- +
- + return s;
- + }
- +
-